﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using YasharEl.Infrastructure.ApplicationModel.Bootstrap.Reporting;
using YasharEl.Infrastructure.ObjectFactory;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Execution
{
    /// <summary>
    /// The execution context describes an <see cref="IExecutor{TExtension}"/>
    /// </summary>
    public interface IExecutionContext : IExecutableContextFactory
    {
        /// <summary>
        /// Gets the name of the executor.
        /// </summary>
        string Name { get; }

        /// <summary>
        /// Gets the description of the executor.
        /// </summary>
        string Description { get; }

        /// <summary>
        /// Gets information about all executables which belong the executor.
        /// </summary>
        IEnumerable<IExecutableContext> Executables { get; }

        BaseDependencyContainer Container { get; }
    }
}
